package com.qinggeng.project.tool.third.service;

import com.qinggeng.project.tool.third.domain.SysThird;
import com.qinggeng.project.tool.third.domain.SysThirdPlatform;

import java.util.List;

/**
 * 第三方平台信息Service接口
 *
 * @author qinggeng
 * @date 2020-03-13
 */
public interface ISysThirdPlatformService
{
    /**
     * 查询第三方平台信息
     *
     * @param platformId 第三方平台信息ID
     * @return 第三方平台信息
     */
    public SysThirdPlatform selectSysThirdPlatformById(Long platformId);

    /**
     * 查询第三方平台信息列表
     *
     * @param sysThirdPlatform 第三方平台信息
     * @return 第三方平台信息集合
     */
    public List<SysThirdPlatform> selectSysThirdPlatformList(SysThirdPlatform sysThirdPlatform);

    /**
     * 新增第三方平台信息
     *
     * @param sysThirdPlatform 第三方平台信息
     * @return 结果
     */
    public int insertSysThirdPlatform(SysThirdPlatform sysThirdPlatform);

    /**
     * 修改第三方平台信息
     *
     * @param sysThirdPlatform 第三方平台信息
     * @return 结果
     */
    public int updateSysThirdPlatform(SysThirdPlatform sysThirdPlatform);

    /**
     * 批量删除第三方平台信息
     *
     * @param platformIds 需要删除的第三方平台信息ID
     * @return 结果
     */
    public int deleteSysThirdPlatformByIds(Long[] platformIds);

    /**
     * 删除第三方平台信息信息
     *
     * @param platformId 第三方平台信息ID
     * @return 结果
     */
    public int deleteSysThirdPlatformById(Long platformId);


    /**
     * 获取支付宝授权地址
     *
     * @param redirectUri 返回地址
     * @return 授权URL
     */
    String aliPayToWebAuth(String redirectUri) throws Exception;

    /**
     * 支付宝App授权
     * @return
     * @throws Exception
     */
    String alipayToAppAuth(String platform) throws Exception;

    /**
     * 获取支付宝认证Token
     *
     * @param appAuthCode
     * @return
     * @throws Exception
     */
    SysThird aliPayAppToThirdInfo(String appAuthCode) throws Exception;

    /**
     * 获取QQ认证Token
     *
     * @param code
     * @return
     * @throws Exception
     */
    SysThird qqWebToThirdInfo(String code, String redirectUri) throws Exception;

    /**
     * 腾讯QQ 获取QQ授权地址
     *
     * @param redirectUri 返回地址
     * @return 授权URL
     */
    String qqToWebAuth(String redirectUri) throws Exception;


    /**
     * 腾讯QQ 获取个人信息 App授权
     * @param accessToken
     * @param openId
     * @return
     * @throws Exception
     */
    SysThird qqAppToThirdInfo(String accessToken, String openId) throws Exception;


    /**
     * 微信 获取个人信息 小程序
     * @param encryptedData 加密值
     * @param iv iv值
     * @param sessionKey sessionKey
     * @return
     */
//    public SysThird wxMinToThirdInfo(String encryptedData, String iv, String code)  throws Exception;
    public SysThird wxMinToThirdInfo(String encryptedData, String iv, String sessionKey)  throws Exception;

    /**
     *
     * @param code
     * @return
     * @throws Exception
     */
   // public SysThird wxMinToThirdInfo(String code)  throws Exception;


    /**
     * 微信 获取个人信息 pc微信
     * @param code
     * @return
     */
   // SysThird wxWebToThirdInfo(String code)  throws Exception;

    /**
     * 微信 获取个人信息 app端
     * @param code
     * @return
     * @throws Exception
     */
//    SysThird wxAppToThirdInfo(String code)throws Exception;

    /**
     * 微信 获取个人信息 app端
     * @param unionid
     * @return
     * @throws Exception
     */
//    SysThird wxAppToThirdInfo(String unionid)throws Exception;

    /**
     * 第三方登录
     * @param code
     * @param platform
     * @return
     */
    SysThird appToThirdInfo(String code, String platform);

    /**
     * 支付宝绑定ggzy
     * @param appAuthCode
     */
    void alipayBind(String appAuthCode) throws Exception;

    /**
     * 支付宝绑定gsd
     * @param appAuthCode
     * @throws Exception
     */
    void alipayBindByGsd(String appAuthCode) throws Exception;

    /**
     * 微信绑定
     * @param code
     */
    void wxBind(String code) throws Exception;
    /**
     * 微信绑定gsd
     * @param
     */
    void wxBindByGsd(String openid,String accessToken) throws Exception;

    /**
     * 根据code查询平台信息
     * @param platform
     * @return
     */
    SysThirdPlatform selectSysThirdPlatformByCode(String platform);
}
